JDBC (Java Database Connectivity) হল একটি Java API যা ডেটাবেসের সাথে যোগাযোগ করার জন্য ব্যবহৃত হয়। JDBC এর মাধ্যমে Java অ্যাপ্লিকেশন ডেটাবেসে SQL (Structured Query Language) কোয়েরি চালাতে পারে এবং ডেটা অ্যাক্সেস করতে পারে। যখন আমরা JDBC ব্যবহার করে ডেটাবেসে কাজ করি, তখন কখনো কখনো আমাদের SQL expressions বা অভিব্যক্তি (expressions) মূল্যায়ন করতে হতে পারে, যেমন গণনা, ডেটা পরিবর্তন, শর্তসাপেক্ষ লজিক, অথবা অ্যাগ্রিগেট ফাংশন ব্যবহার করা।
এখানে, আমরা দেখব JDBC ব্যবহার করে কিভাবে expressions evaluate করা যায়।
1. SQL Expressions এবং তাদের মূল্যায়ন
SQL expressions হল ডেটাবেসের মধ্যে গাণিতিক, শর্তসাপেক্ষ, অথবা স্ট্রিং অপারেশন যা কুইরি চলানোর সময় হিসাব বা বিশ্লেষণ করতে ব্যবহৃত হয়। যেমন:
- Mathematical Expressions: গাণিতিক হিসাব যেমন যোগ, বিয়োগ, গুণ, ভাগ।
- String Expressions: স্ট্রিং অপারেশন যেমন কনক্যাটেনেশন।
- Conditional Expressions: শর্তসাপেক্ষ অপারেশন যেমন CASE WHEN অথবা IF।
- Aggregate Expressions: অ্যাগ্রিগেট ফাংশন যেমন COUNT, SUM, AVG ইত্যাদি।
JDBC এর মাধ্যমে আপনি SQL expressions এর ফলাফল ডেটাবেস থেকে নিয়ে Java অ্যাপ্লিকেশনে ব্যবহার করতে পারেন।
2. JDBC তে Expressions Evaluate করার উদাহরণ
ধরা যাক, আপনার একটি টেবিল রয়েছে যেখানে ব্যবহারকারীদের তথ্য সংরক্ষিত রয়েছে, এবং আপনি তাদের বয়সের উপর ভিত্তি করে কিছু গাণিতিক এবং শর্তসাপেক্ষ হিসাব করতে চান।
উদাহরণ 1: Mathematical Expression (গাণিতিক অভিব্যক্তি)
ধরা যাক, আপনার employees টেবিল রয়েছে, যেখানে কর্মচারীদের salary (বেতন) এবং bonus (বোনাস) রয়েছে। আপনি তাদের total compensation হিসাব করতে চান যা salary + bonus হবে।
SQL Query:
SELECT id, name, salary + bonus AS total_compensation FROM employees;
এখন, JDBC ব্যবহার করে এই expression execute করা হবে এবং তার ফলাফল Java অ্যাপ্লিকেশনে রিট্রাইভ করা হবে।
JDBC কোড:
import java.sql.*;
public class ExpressionEvaluationExample {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
// ডেটাবেসে সংযোগ স্থাপন
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database", "username", "password");
// SQL Query তৈরি করা
String query = "SELECT id, name, salary + bonus AS total_compensation FROM employees";
// Statement তৈরি করা
statement = connection.createStatement();
// কোয়েরি এক্সিকিউট করা
resultSet = statement.executeQuery(query);
// রেজাল্ট প্রিন্ট করা
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
double totalCompensation = resultSet.getDouble("total_compensation");
System.out.println("ID: " + id + ", Name: " + name + ", Total Compensation: " + totalCompensation);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (resultSet != null) resultSet.close();
if (statement != null) statement.close();
if (connection != null) connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
কোড ব্যাখ্যা:
- Query: এখানে salary + bonus একটি গাণিতিক অভিব্যক্তি হিসেবে ব্যবহার করা হয়েছে এবং তাকে total_compensation নামে আলাদা একটি কলাম হিসেবে দেখানো হয়েছে।
- executeQuery(): এই মেথডটি SQL কোয়েরি execute করে এবং ফলাফল ResultSet এ নিয়ে আসে।
- ResultSet: আমরা
resultSet.getDouble("total_compensation")মেথড ব্যবহার করে গাণিতিক অপারেশনের ফলাফল রিট্রাইভ করেছি।
উদাহরণ 2: Conditional Expression (শর্তসাপেক্ষ অভিব্যক্তি)
ধরা যাক, আপনি কর্মচারীদের salary এর ওপর ভিত্তি করে তাদের বোনাসের পরিমাণ দেখতে চান। যদি তাদের বেতন ৫০০০ এর বেশি হয়, তবে বোনাস ১০% হবে, অন্যথায় ৫%।
SQL Query:
SELECT id, name, salary,
CASE
WHEN salary > 5000 THEN salary * 0.10
ELSE salary * 0.05
END AS bonus
FROM employees;
এখানে, CASE WHEN শর্তসাপেক্ষ অপারেশন ব্যবহার করা হয়েছে, যেখানে কর্মচারীর salary এর ওপর নির্ভর করে bonus নির্ধারণ করা হচ্ছে।
JDBC কোড:
import java.sql.*;
public class ConditionalExpressionExample {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
// ডেটাবেসে সংযোগ স্থাপন
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database", "username", "password");
// SQL Query তৈরি করা
String query = "SELECT id, name, salary, " +
"CASE " +
"WHEN salary > 5000 THEN salary * 0.10 " +
"ELSE salary * 0.05 " +
"END AS bonus " +
"FROM employees";
// Statement তৈরি করা
statement = connection.createStatement();
// কোয়েরি এক্সিকিউট করা
resultSet = statement.executeQuery(query);
// রেজাল্ট প্রিন্ট করা
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
double salary = resultSet.getDouble("salary");
double bonus = resultSet.getDouble("bonus");
System.out.println("ID: " + id + ", Name: " + name + ", Salary: " + salary + ", Bonus: " + bonus);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (resultSet != null) resultSet.close();
if (statement != null) statement.close();
if (connection != null) connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
কোড ব্যাখ্যা:
- CASE WHEN: এটি একটি শর্তসাপেক্ষ অভিব্যক্তি, যা SQL কোয়েরির মধ্যে ব্যবহার করা হয়েছে।
- executeQuery(): এই মেথডটি SQL কোয়েরি execute করে এবং শর্ত অনুযায়ী ফলাফল ফিরিয়ে আনে।
- ResultSet: আমরা
resultSet.getDouble("bonus")ব্যবহার করে শর্ত অনুযায়ী বোনাসের পরিমাণ রিট্রাইভ করেছি।
3. Aggregate Expressions (অ্যাগ্রিগেট ফাংশন)
যখন আপনি একটি কলামের উপর গণনা করতে চান, যেমন SUM, COUNT, AVG, MIN, MAX ইত্যাদি, তখন আপনাকে aggregate functions ব্যবহার করতে হবে।
উদাহরণ: Total Salary এবং Average Salary বের করা
SQL Query:
SELECT SUM(salary) AS total_salary, AVG(salary) AS average_salary FROM employees;
JDBC কোড:
import java.sql.*;
public class AggregateExpressionExample {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
// ডেটাবেসে সংযোগ স্থাপন
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database", "username", "password");
// SQL Query তৈরি করা
String query = "SELECT SUM(salary) AS total_salary, AVG(salary) AS average_salary FROM employees";
// Statement তৈরি করা
statement = connection.createStatement();
// কোয়েরি এক্সিকিউট করা
resultSet = statement.executeQuery(query);
// রেজাল্ট প্রিন্ট করা
if (resultSet.next()) {
double totalSalary = resultSet.getDouble("total_salary");
double averageSalary = resultSet.getDouble("average_salary");
System.out.println("Total Salary: " + totalSalary + ", Average Salary: " + averageSalary);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (resultSet != null) resultSet.close();
if (statement != null) statement.close();
if (connection != null) connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
কোড ব্যাখ্যা:
- SUM() এবং AVG(): অ্যাগ্রিগেট ফাংশন ব্যবহার করে সমস্ত কর্মচারীর বেতন যোগফল (sum) এবং গড় বেতন (average) বের করা হয়েছে।
- executeQuery(): এই মেথডটি কোয়েরি execute করে এবং অ্যাগ্রিগেট ফাংশনের ফলাফল রিট্রাইভ করে।
সারাংশ
JDBC ব্যবহার করে SQL expressions এর মাধ্যমে ডেটা প্রক্রিয়াকরণ অত্যন্ত সহজ। আপনি mathematical expressions, conditional expressions, এবং aggregate functions ব্যবহার করে ডেটাবেস থেকে প্রয়োজনীয় ফলাফল বের করতে পারেন। JDBC এর মাধ্যমে, আপনি SQL কোয়েরি চালিয়ে expressions মূল্যায়ন করতে পারেন এবং সেই ডেটা Java অ্যাপ্লিকেশনে ব্যবহার করতে পারেন।
Read more